package cn.fl.project.service;

import cmm.comm.facade.framework.dto.SysDictionaryDTO;
import cmm.mid.core.framework.page.DataResultVO;
import cn.fl.project.vo.PrjCstAccInfoVO;
import cn.fl.project.condition.PrjCstAccInfoQueryCondition;
import cmm.mid.core.framework.page.KeyValueVO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;

import java.util.List;

/**
 * @Description: 项目客户账户信息表 客户端服务层接口
 * 业务层方法名称前缀：
 * 新增：add*
 * 删除：remove*
 * 修改：modify*
 * 批量：batch*
 * 查询对象：select* get*
 * 查询集合：search*
 */
public interface IPrjCstAccInfoService {
	
	/**
	 * 获取唯一对象
	 * @param id 主键
	 * @return 对象DTO
	 */
	public PrjCstAccInfoVO selectById(Long id) throws BaseException;
	
	/**
	 * 新增
	 * @param entity
	 * @return
	 */
    public Long add(PrjCstAccInfoVO entity) throws BaseException;
    
    /**
     * 批量删除
     * @param ids
     * @return
     */
    public boolean removeByIds(List<Long> ids) throws BaseException;

    /**
     * 修改
     * @param entity
     * @return
     */
    public boolean modify(PrjCstAccInfoVO entity) throws BaseException;

    /**
     * 分页查询所有
     * @param page
     * @return
     */
    public Pager searchListPage(Pager page) throws BaseException;
    
    /**
     * 根据条件查询所有
     * @param condition
     * @return
     */
    public List<PrjCstAccInfoVO> searchList(PrjCstAccInfoQueryCondition condition) throws BaseException;
    
    /**
     * 查询*数据字典
     * @param groupCd 组代码
     * @return List<KeyValueVO>
     */
    public List<KeyValueVO> searchCdList(String groupCd);

    /**
     * 检验客户四要素
     * @param condition
     * @return
     * @throws BaseException
     */
    public DataResultVO validePrjCstAccInfo(PrjCstAccInfoQueryCondition condition) throws BaseException;
	/*
	 * 根据项目id 查询项目客户信息
	 */
	@Deprecated
	public PrjCstAccInfoVO selectByPrjId(Long id)throws BaseException;
	/*
	 * 分页查询苏宁开户成功数据
	 */
	public Pager searchPrjCstAccInfoPage(Pager page)throws BaseException;

    /**
     * 修改项目客户账户信息
     *
     * @param condition
     * @return
     * @throws BaseException
     */
    public DataResultVO modifyPrjAccInfo(PrjCstAccInfoQueryCondition condition) throws BaseException;

	/**
	 * 校验四要素，不保存
	 *
	 * @param condition
	 * @return
	 * @throws BaseException
	 */
	public DataResultVO snVerifyModifyPrjAccInfo(PrjCstAccInfoQueryCondition condition) throws BaseException;


	/**
	 *  获取资管机构换卡数据列表
	 * @param pager
	 * @return
	 * @throws BaseException
	 */
    public Pager searchAssetManagerChangeCard (Pager pager) throws BaseException;

	/**
	 * 获取有换卡需求的资管机构列表
	 * @return
	 */
	List<KeyValueVO> getInsIdListOfChangeCard () throws BaseException;

	/**
	 *  众邦银行列表
	 * @param sysCd
	 * @param orgCd
	 * @param codeGrpCd
	 * @return
	 * @throws BaseException
	 */
	public List<SysDictionaryDTO> searchGroup(String sysCd, String orgCd, String codeGrpCd) throws BaseException;
}
